using System;
using System.Collections.Generic;
using System.Text;

namespace Common.Utilities.Documents
{
    /// <summary>
    /// 
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    public delegate void ObjectSelected(object sender, SelectedObjectEventArgs e);

    /// <summary>
    /// 
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    public delegate void DocumentSaved(object sender, DocumentEventArgs e);

    /// <summary>
    /// 
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    public delegate void DocumentOpened(object sender, DocumentEventArgs e);

    /// <summary>
    /// 
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    public delegate void DocumentClosed(object sender, DocumentEventArgs e);

    /// <summary>
    /// 
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="enable"></param>
    public delegate void UpdateRedoCommand(object sender, bool enable);

    /// <summary>
    /// 
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="enable"></param>
    public delegate void UpdateUndoCommand(object sender, bool enable);

    /// <summary>
    /// 
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="enable"></param>
    public delegate void UpdateCopyCommand(object sender, bool enable);

    /// <summary>
    /// 
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="enable"></param>
    public delegate void UpdatePasteCommand(object sender, bool enable);

    /// <summary>
    /// 
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="enable"></param>
    public delegate void UpdateCutCommand(object sender, bool enable);

    /// <summary>
    /// 
    /// </summary>
    public class SelectedObjectEventArgs:EventArgs
    {
        private object _SelectedObj;
        /// <summary></summary>
        public object SelectedObject
        {
            get { return _SelectedObj; }
            set { _SelectedObj = value; }
        }
	
        /// <summary>
        /// 
        /// </summary>
        /// <param name="selectedObj"></param>
        public SelectedObjectEventArgs(object selectedObj)
        {
            this._SelectedObj = selectedObj;
        }
    }

    /// <summary>
    /// 
    /// </summary>
    public class DocumentEventArgs : EventArgs
    {
        private string _FilePath;
        /// <summary></summary>
        public string FilePath
        {
            get { return _FilePath; }
            set { _FilePath = value; }
        }

        private string _Title;
        /// <summary></summary>
        public string Title
        {
            get { return _Title; }
            set { _Title = value; }
        }
	
        /// <summary>
        /// 
        /// </summary>
        /// <param name="filePath"></param>
        /// <param name="title"></param>
        public DocumentEventArgs(string filePath, string title)
        {
            this._FilePath = filePath;
            this._Title = title;
        }
    }
}
